/*
 *
 *	jQuery Timer plugin v0.1
 *		Matt Schmidt [http://www.mattptr.net]
 *
 *	Licensed under the BSD License:
 *		http://mattptr.net/license/license.txt
 *
 */
 
 
 /**
  *
  * timer() provides a cleaner way to handle intervals  
  *
  *	@usage
  * $.timer(interval, callback);
  *
  *
  * @example
  * $.timer(1000, function (timer) {
  * 	alert("hello");
  * 	timer.stop();
  * });
  * @desc Show an alert box after 1 second and stop
  * 
  * @example
  * var second = false;
  *	$.timer(1000, function (timer) {
  *		if (!second) {
  *			alert('First time!');
  *			second = true;
  *			timer.reset(3000);
  *		}
  *		else {
  *			alert('Second time');
  *			timer.stop();
  *		}
  *	});
  * @desc Show an alert box after 1 second and show another after 3 seconds
  *
  * 
  */

(function($) {

    $.fn.timer = function(interval, callback) {

        var interval = interval || 100;

        if (!callback)
            return false;

        _timer = function(interval, callback) {
            this.stop = function() {
                clearInterval(self.id);
            };

            this.internalCallback = function() {
                callback(self);
            };

            this.reset = function(val) {
                if (self.id)
                    clearInterval(self.id);

                var val = val || 100;
                this.id = setInterval(this.internalCallback, val);
            };

            this.interval = interval;
            this.id = setInterval(this.internalCallback, this.interval);

            var self = this;
        };

        return new _timer(interval, callback);

    };
})(jQuery);

